9 research outputs found

    Approximate Computing Strategies for Low-Overhead Fault Tolerance in Safety-Critical Applications

    Get PDF
    This work studies the reliability of embedded systems with approximate computing on software and hardware designs. It presents approximate computing methods and proposes approximate fault tolerance techniques applied to programmable hardware and embedded software to provide reliability at low computational costs. The objective of this thesis is the development of fault tolerance techniques based on approximate computing and proving that approximate computing can be applied to most safety-critical systems. It starts with an experimental analysis of the reliability of embedded systems used at safety-critical projects. Results show that the reliability of single-core systems, and types of errors they are sensitive to, differ from multicore processing systems. The usage of an operating system and two different parallel programming APIs are also evaluated. Fault injection experiment results show that embedded Linux has a critical impact on the system’s reliability and the types of errors to which it is most sensitive. Traditional fault tolerance techniques and parallel variants of them are evaluated for their fault-masking capability on multicore systems. The work shows that parallel fault tolerance can indeed not only improve execution time but also fault-masking. Lastly, an approximate parallel fault tolerance technique is proposed, where the system abandons faulty execution tasks. This first approximate computing approach to fault tolerance in parallel processing systems was able to improve the reliability and the fault-masking capability of the techniques, significantly reducing errors that would cause system crashes. Inspired by the conflict between the improvements provided by approximate computing and the safety-critical systems requirements, this work presents an analysis of the applicability of approximate computing techniques on critical systems. The proposed techniques are tested under simulation, emulation, and laser fault injection experiments. Results show that approximate computing algorithms do have a particular behavior, different from traditional algorithms. The approximation techniques presented and proposed in this work are also used to develop fault tolerance techniques. Results show that those new approximate fault tolerance techniques are less costly than traditional ones and able to achieve almost the same level of error masking.Este trabalho estuda a confiabilidade de sistemas embarcados com computação aproximada em software e projetos de hardware. Ele apresenta métodos de computação aproximada e técnicas aproximadas para tolerância a falhas em hardware programável e software embarcado que provêem alta confiabilidade a baixos custos computacionais. O objetivo desta tese é o desenvolvimento de técnicas de tolerância a falhas baseadas em computação aproximada e provar que este paradigma pode ser usado em sistemas críticos. O texto começa com uma análise da confiabilidade de sistemas embarcados usados em sistemas de tolerância crítica. Os resultados mostram que a resiliência de sistemas singlecore, e os tipos de erros aos quais eles são mais sensíveis, é diferente dos multi-core. O uso de sistemas operacionais também é analisado, assim como duas APIs de programação paralela. Experimentos de injeção de falhas mostram que o uso de Linux embarcado tem um forte impacto na confiabilidade do sistema. Técnicas tradicionais de tolerância a falhas e variações paralelas das mesmas são avaliadas. O trabalho mostra que técnicas de tolerância a falhas paralelas podem de fato melhorar não apenas o tempo de execução da aplicação, mas também seu mascaramento de erros. Por fim, uma técnica de tolerância a falhas paralela aproximada é proposta, onde o sistema abandona instâncias de execuções que apresentam falhas. Esta primeira experiência com computação aproximada foi capaz de melhorar a confiabilidade das técnicas previamente apresentadas, reduzindo significativamente a ocorrência de erros que provocam um crash total do sistema. Inspirado pelo conflito entre as melhorias trazidas pela computação aproximada e os requisitos dos sistemas críticos, este trabalho apresenta uma análise da aplicabilidade de computação aproximada nestes sistemas. As técnicas propostas são testadas sob experimentos de injeção de falhas por simulação, emulação e laser. Os resultados destes experimentos mostram que algoritmos aproximados possuem um comportamento particular que lhes é inerente, diferente dos tradicionais. As técnicas de aproximação apresentadas e propostas no trabalho são também utilizadas para o desenvolvimento de técnicas de tolerância a falhas aproximadas. Estas novas técnicas possuem um custo menor que as tradicionais e são capazes de atingir o mesmo nível de mascaramento de erros

    Análise de erros em software no processador ARM embarcado no SoC Zynq

    No full text
    This work presents an analysis of the occurrence of software errors at the Xilinx Zynq-7000 programmable SoC, which adopts two ARM processing cores (more specifically a Cortex-A9 MPx2). The goal is to analyze the software errors occurrence due to failures at dual-core embedded processors. A comparison of the errors occurrence at different applications for different uses was developed, as well as comparative analysis of the applications behaviors for both it’s parallel and serial versions. To achieve those, a fault injection tool was developed - using the OVP simulator - which is capable of injection faults at application runtime. The analysis method consists into comparing fault-injected executions with a fault-free application execution. The error types, count, and effects on the final results were extracted from the developed tool, and were used to develop analyses on how to engage, treat, and prevent the generated errors. Both the parallel and sequential versions of the applications were executed on the very same simulated environment (a version of embedded Linux) and the parallel versions were implemented using pthreads.Este trabalho apresenta uma análise da ocorrência de erros em software no SoC Zynq-7000, comercializado pela Xilinx, que possui dois núcleos de processamento ARM embarcados (mais especificamente o Cortex-A9 MPx2). O objetivo é analisar a ocorrência de erros devido ao aparecimento de falhas em software em processadores embarcados dual-core. Foi feita uma comparação da ocorrência de erros em aplicações de propósitos variados, assim como análises comparativas do comportamento de cada aplicação quando em sua versão serial e paralela. Para tanto, desenvolveu-se uma ferramenta para a inserção de falhas, utilizando o simulador OVP, que é capaz de inserir falhas durante a execução de uma aplicação. O método de análise consiste em comparar execuções da aplicação onde falhas foram injetadas com uma execução livre de falhas. Assim foi possível analisar quais tipos de erros foram gerados pelas falhas, sua quantidade, efeitos no resultado final da execução e desenvolver análises para abordagens futuras de como evitá-los ou tratá-los. As versões paralelas das aplicações são implementadas usando pthreads e ambas as versões paralelas e sequenciais foram executadas em uma versão de Linux embarcado

    Approximate Computing Strategies for Low-Overhead Fault Tolerance in Safety-Critical Applications

    No full text
    This work studies the reliability of embedded systems with approximate computing on software and hardware designs. It presents approximate computing methods and proposes approximate fault tolerance techniques applied to programmable hardware and embedded software to provide reliability at low computational costs. The objective of this thesis is the development of fault tolerance techniques based on approximate computing and proving that approximate computing can be applied to most safety-critical systems. It starts with an experimental analysis of the reliability of embedded systems used at safety-critical projects. Results show that the reliability of single-core systems, and types of errors they are sensitive to, differ from multicore processing systems. The usage of an operating system and two different parallel programming APIs are also evaluated. Fault injection experiment results show that embedded Linux has a critical impact on the system’s reliability and the types of errors to which it is most sensitive. Traditional fault tolerance techniques and parallel variants of them are evaluated for their fault-masking capability on multicore systems. The work shows that parallel fault tolerance can indeed not only improve execution time but also fault-masking. Lastly, an approximate parallel fault tolerance technique is proposed, where the system abandons faulty execution tasks. This first approximate computing approach to fault tolerance in parallel processing systems was able to improve the reliability and the fault-masking capability of the techniques, significantly reducing errors that would cause system crashes. Inspired by the conflict between the improvements provided by approximate computing and the safety-critical systems requirements, this work presents an analysis of the applicability of approximate computing techniques on critical systems. The proposed techniques are tested under simulation, emulation, and laser fault injection experiments. Results show that approximate computing algorithms do have a particular behavior, different from traditional algorithms. The approximation techniques presented and proposed in this work are also used to develop fault tolerance techniques. Results show that those new approximate fault tolerance techniques are less costly than traditional ones and able to achieve almost the same level of error masking.Este trabalho estuda a confiabilidade de sistemas embarcados com computação aproximada em software e projetos de hardware. Ele apresenta métodos de computação aproximada e técnicas aproximadas para tolerância a falhas em hardware programável e software embarcado que provêem alta confiabilidade a baixos custos computacionais. O objetivo desta tese é o desenvolvimento de técnicas de tolerância a falhas baseadas em computação aproximada e provar que este paradigma pode ser usado em sistemas críticos. O texto começa com uma análise da confiabilidade de sistemas embarcados usados em sistemas de tolerância crítica. Os resultados mostram que a resiliência de sistemas singlecore, e os tipos de erros aos quais eles são mais sensíveis, é diferente dos multi-core. O uso de sistemas operacionais também é analisado, assim como duas APIs de programação paralela. Experimentos de injeção de falhas mostram que o uso de Linux embarcado tem um forte impacto na confiabilidade do sistema. Técnicas tradicionais de tolerância a falhas e variações paralelas das mesmas são avaliadas. O trabalho mostra que técnicas de tolerância a falhas paralelas podem de fato melhorar não apenas o tempo de execução da aplicação, mas também seu mascaramento de erros. Por fim, uma técnica de tolerância a falhas paralela aproximada é proposta, onde o sistema abandona instâncias de execuções que apresentam falhas. Esta primeira experiência com computação aproximada foi capaz de melhorar a confiabilidade das técnicas previamente apresentadas, reduzindo significativamente a ocorrência de erros que provocam um crash total do sistema. Inspirado pelo conflito entre as melhorias trazidas pela computação aproximada e os requisitos dos sistemas críticos, este trabalho apresenta uma análise da aplicabilidade de computação aproximada nestes sistemas. As técnicas propostas são testadas sob experimentos de injeção de falhas por simulação, emulação e laser. Os resultados destes experimentos mostram que algoritmos aproximados possuem um comportamento particular que lhes é inerente, diferente dos tradicionais. As técnicas de aproximação apresentadas e propostas no trabalho são também utilizadas para o desenvolvimento de técnicas de tolerância a falhas aproximadas. Estas novas técnicas possuem um custo menor que as tradicionais e são capazes de atingir o mesmo nível de mascaramento de erros

    Análise de erros em software no processador ARM embarcado no SoC Zynq

    No full text
    This work presents an analysis of the occurrence of software errors at the Xilinx Zynq-7000 programmable SoC, which adopts two ARM processing cores (more specifically a Cortex-A9 MPx2). The goal is to analyze the software errors occurrence due to failures at dual-core embedded processors. A comparison of the errors occurrence at different applications for different uses was developed, as well as comparative analysis of the applications behaviors for both it’s parallel and serial versions. To achieve those, a fault injection tool was developed - using the OVP simulator - which is capable of injection faults at application runtime. The analysis method consists into comparing fault-injected executions with a fault-free application execution. The error types, count, and effects on the final results were extracted from the developed tool, and were used to develop analyses on how to engage, treat, and prevent the generated errors. Both the parallel and sequential versions of the applications were executed on the very same simulated environment (a version of embedded Linux) and the parallel versions were implemented using pthreads.Este trabalho apresenta uma análise da ocorrência de erros em software no SoC Zynq-7000, comercializado pela Xilinx, que possui dois núcleos de processamento ARM embarcados (mais especificamente o Cortex-A9 MPx2). O objetivo é analisar a ocorrência de erros devido ao aparecimento de falhas em software em processadores embarcados dual-core. Foi feita uma comparação da ocorrência de erros em aplicações de propósitos variados, assim como análises comparativas do comportamento de cada aplicação quando em sua versão serial e paralela. Para tanto, desenvolveu-se uma ferramenta para a inserção de falhas, utilizando o simulador OVP, que é capaz de inserir falhas durante a execução de uma aplicação. O método de análise consiste em comparar execuções da aplicação onde falhas foram injetadas com uma execução livre de falhas. Assim foi possível analisar quais tipos de erros foram gerados pelas falhas, sua quantidade, efeitos no resultado final da execução e desenvolver análises para abordagens futuras de como evitá-los ou tratá-los. As versões paralelas das aplicações são implementadas usando pthreads e ambas as versões paralelas e sequenciais foram executadas em uma versão de Linux embarcado

    ARFT: An Approximative Redundant Technique for Fault Tolerance

    No full text
    International audienceThis paper presents a novel redundancy technique for software fault tolerance, named Approximative Redundant Fault Tolerance (ARFT). It uses approximate computing in order to provide the same error detection of a classic DWC method with less overhead. In this work ARFT was implemented to protect the ARM Cortex-A9 embedded into Zynq-7000 All Programmable SoC. An extensive fault injection campaign was performed to evaluate the proposed technique. Results show that distinct applications with different approximation methods present a big variation in terms of execution time, memory footprint and error detection capability. Performance analysis shows that ARFT can reduce the overhead in some benchmarks cases up to 40%
    corecore